/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package business;

import model.Usuario;
import dao.UsuarioDAO;
import dao.AirLineDAOException;
import dao.imp.UsuarioDAOImpl;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import model.Reserva;
import view.FacesHelper;


/**
 *
 * @author Neto
 */
public class UsuarioBusiness {
    
    private Usuario usuario = new Usuario();
    private int id;
    private boolean usuLogado= false;
    private boolean adminLogado= false;
    private String ultID;

    /**
     * @return the usuario
     */
    public Usuario getUsuario() {
        return usuario;
    }

    /**
     * @param usuario the usuario to set
     */
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
    //METODOS PARA MANIPULAÇÃO DE DADOS DO USUARIO
    
    //autenticaçao
    public String autenticaUsuario() throws AirLineDAOException {
        UsuarioDAO interfaceUsuario = new UsuarioDAOImpl();
        String retorno;
        Usuario usr = interfaceUsuario.procurarUser(this.usuario.getLogin().trim(),
                this.usuario.getSenha().trim());
        if (usr.getCpf() != null && !usr.getCpf().trim().equals("")) {
            setUsuario(usr);
            if (usr.getLogin().equalsIgnoreCase("admin")){
                retorno = "sucessoAutenticacaoAdmin";
                setAdminLogado(true);
            }
            else{
                setUsuLogado(true);
                retorno = "sucessoAutenticacaoUsu";
            }
        } else {
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage("Usuário ou senha inválido(s).");
            contexto.addMessage("login", msg);
            setAdminLogado(false);
            retorno = "falhaAutenticacao";
        }
        return retorno;
    }
    
    //logout
    public String adminLogout() {
        setAdminLogado(false);
        usuario = new Usuario();
        return "logout";
    }
    
    public String usuLogout() {
        setUsuLogado(false);
        usuario = new Usuario();
        return "logout";
    }
        
   //exclui usuario
   public String excluirUser() throws AirLineDAOException {
        UsuarioDAO interfaceCliente = new UsuarioDAOImpl();
        interfaceCliente.excluirUser(usuario);
        setUsuLogado(false);
        return "usuarioExcluido";
    }
    
    
    //novo usuario
       public String novoUsuario() {
        this.setUsuario(new Usuario());
        setUsuLogado(false);
        return "novoUsuario";
    }
       
   //salvar usuario
    public String salvarUsuario() throws AirLineDAOException {
        UsuarioDAO interfaceCliente = new UsuarioDAOImpl();
        interfaceCliente.salvarUser(usuario);
        setUsuLogado(true);
        return "usuarioInserido";
    }
    
    //editar usuario
     public String editarUsuario() {
        setUsuario(usuario);
        return "editarUsuario";
    }
     
     //atualizar usuario
     public String atualizarUsuario() throws AirLineDAOException {
        UsuarioDAO interfaceUsuario = new UsuarioDAOImpl();
        interfaceUsuario.atualizarUser(usuario);
        return "usuarioAtualizado";
    }


    /**
     * @return the id
     */
    public int getId(){
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }
    
    public String ultId() throws AirLineDAOException{
        
        UsuarioDAO interfaceUsuario = new UsuarioDAOImpl();
        id=Integer.parseInt(interfaceUsuario.ultimoID());
        id=id+1;
        
        ultID=Integer.toString(id);
        
        usuario.setId(ultID);
        
        return ultID;           }
    
    //VALIDAÇÕES
    public void validaNome(FacesContext contexto, UIComponent componente, Object objeto){
        String nom = (String)objeto;
        if (nom == null || nom.trim().equals("") || nom.length() < 10 && nom.length() > 20) {
            ((UIInput)componente).setValid(false);
            FacesMessage msg = new FacesMessage(FacesHelper.getMessage("nomeErrado.usuario"));
            contexto.addMessage(componente.getClientId(contexto), msg);
        }
    }
    
     public void validaTelefone(FacesContext contexto, UIComponent componente, Object objeto){
        String nom = (String)objeto;
        if (nom == null || nom.trim().equals("") || nom.length() < 8 && nom.length() > 10) {
            ((UIInput)componente).setValid(false);
            FacesMessage msg = new FacesMessage(FacesHelper.getMessage("telefoneErrado.usuario"));
            contexto.addMessage(componente.getClientId(contexto), msg);
        }
    }
     
      public void validaCpf(FacesContext contexto, UIComponent componente, Object objeto){
        String nom = (String)objeto;
        if (nom == null || nom.trim().equals("") || nom.length() != 11) {
            ((UIInput)componente).setValid(false);
            FacesMessage msg = new FacesMessage(FacesHelper.getMessage("cpfErrado.usuario"));
            contexto.addMessage(componente.getClientId(contexto), msg);
        }
    }
      
       public void validaEmail(FacesContext contexto, UIComponent componente, Object objeto){
        String nom = (String)objeto;
        if (nom == null || nom.trim().equals("") || nom.length() < 10 && nom.length() > 20) {
            ((UIInput)componente).setValid(false);
            FacesMessage msg = new FacesMessage(FacesHelper.getMessage("emailErrado.usuario"));
            contexto.addMessage(componente.getClientId(contexto), msg);
        }
    }
       
        public void validaLogin(FacesContext contexto, UIComponent componente, Object objeto){
        String nom = (String)objeto;
        if (nom == null || nom.trim().equals("") || nom.length() < 5 && nom.length() > 10) {
            ((UIInput)componente).setValid(false);
            FacesMessage msg = new FacesMessage(FacesHelper.getMessage("loginErrado.usuario"));
            contexto.addMessage(componente.getClientId(contexto), msg);
        }
    }

    /**
     * @return the usuLogado
     */
    public boolean isUsuLogado() {
        return usuLogado;
    }

    /**
     * @param usuLogado the usuLogado to set
     */
    public void setUsuLogado(boolean usuLogado) {
        this.usuLogado = usuLogado;
    }

    /**
     * @return the adminLogado
     */
    public boolean isAdminLogado() {
        return adminLogado;
    }

    /**
     * @param adminLogado the adminLogado to set
     */
    public void setAdminLogado(boolean adminLogado) {
        this.adminLogado = adminLogado;
    }
        
        
}
